///////////////////////////////////////////////////////////////
//
// FileName : KTarUI.cpp
// Creator : Tan Menglong
// Date : 2009/07/15 11:15:11
// Comment : UI.
//
///////////////////////////////////////////////////////////////

#include <assert.h>
#include "error.h"
#include "KTarUI.h"

using namespace KTar;

#ifdef _DEBUG
void KTarUI::AssertValid(const KTarUI* pkObj) const
{
	assert(pkObj);
	assert(m_pkOut);
	assert(m_pkIn);
}
#endif// #ifdef _DEBUG

KTarUI::KTarUI(void)
{
	m_pkOut = NULL;
	m_pkIn = NULL;
}

KTarUI::~KTarUI(void)
{
}

bool KTarUI::Init(wostream* pkOut, wistream* pkIn)
{
	bool bEC = false;
	PROCESS_ERROR(pkOut);
	PROCESS_ERROR(pkIn);
	m_pkOut = pkOut;
	m_pkIn = pkIn;
	bEC = true;
Exit0:
	return bEC;
}

KTarUI& KTarUI::operator<<(const CString& kStr)
{
	ASSERT_VALID(this);
	locale kLoc("chs");
	m_pkOut->imbue(kLoc);

	*m_pkOut << (LPCTSTR)kStr;
	return *this;
}

KTarUI& KTarUI::operator<<(const wchar_t* pwchBuff)
{
	ASSERT_VALID(this);
	locale kLoc("chs");
	m_pkOut->imbue(kLoc);

	*m_pkOut << (LPCTSTR)pwchBuff;
	return *this;
}

KTarUI& KTarUI::operator<<(int nInt)
{
	ASSERT_VALID(this);
	locale kLoc("chs");
	m_pkOut->imbue(kLoc);

	*m_pkOut << nInt;
	return *this;
}

// TODO
KTarUI& KTarUI::operator>>(const CString& kStr)
{
	return *this;
}
